package _09types

// 衍生类型
// 定义了一个新类型Integer，底层类型是int
// Integer 与 int不能直接赋值，需要显示转换
type Integer int

func UseInt() {
	i1 := 10
	i2 := Integer(i1)
	var i3 Integer = 11
	println(i2, i3)
}

type Fish struct {
	Name string
}

func (f Fish) Swim() {
	println("fish 在游")
}

// 衍生类型
// 衍生类型是一个全新的类型，可以相互转换
// 但衍生类型无法使用原生类型中的接口
type FakeFish Fish

func UseFish() {
	f1 := Fish{}
	f2 := FakeFish(f1)

	// f2.Swim()
	f2.Name = "Tom"
	println(f2.Name)
	println(f1.Name)

	var y Yu
	y.Name = "yu"
	y.Swim()
}

// 类型别名
type Yu = Fish
